///*
// * Paletted8Image
// *
// * Copyright (c) 2000, 2001, 2002, 2003 Marco Schmidt.
// * All rights reserved.
// */
//using System;


//namespace Petra.Gis.Geometry.Image.Tiff
//{
///**
// * This class stores a paletted image with one byte per sample in memory.
// *
// * @author Marco Schmidt
// * @see net.sourceforge.jiu.data.IByteChannelImage
// * @see net.sourceforge.jiu.data.IIntegerImage
// * @see net.sourceforge.jiu.data.RGBPalette
// */
//public class MemoryPaletted8Image : MemoryByteChannelImage , IPaletted8Image
//{
//  /**
//   * This image's palette.
//   */
//  private RGBPalette palette;
//  private int maxSampleValue;

//  /**
//   * Create an image of byte channels.
//   * Image data will be completely in memory, so memory requirements are 
//   * <code>width * height * numChannels</code> bytes.
//   * Note that the data will not be initialized, so you should not assume
//   * anything about its content.
//   * @param width the horizontal resolution, must be non-zero and positive
//   * @param height the vertical resolution, must be non-zero and positive
//   * @throws ArgumentException if any of the parameters are smaller than 1
//   */
//  public MemoryPaletted8Image(ImageFileDirectory ifd, int width, int height) : base(ifd, 1, width, height)
//  {
//    palette = null;
//    maxSampleValue = 255;
//  }




//  public MemoryPaletted8Image(ImageFileDirectory ifd, int width, int height, RGBPalette palette) : this(ifd, width, height)
//  {
//    setPalette(palette);
//  }




//  public static void checkPalette(RGBPalette palette)
//  {
//    if (palette == null)
//    {
//      throw new ArgumentException("RGBPalette must be non-null.");
//    }
//    else
//    {
//      int numEntries = palette.getNumEntries();
//      if (numEntries < 1 || numEntries > 256)
//      {
//        throw new ArgumentException("Number of entries must " +
//          "be from 1..256 for a Paletted8Image; got: " + numEntries);
//      }
//    }
//  }




//  public override IPixelImage createCompatibleImage(int width, int height)
//  {
//    RGBPalette newPalette = null;
//    RGBPalette myPalette = getPalette();
//    if (myPalette != null)
//    {
//      newPalette = (RGBPalette)myPalette.clone();
//    }
//    return new MemoryPaletted8Image(_ifd, width, height, newPalette);
//  }




//  public long getAllocatedMemory()
//  {
//    long result = base.getAllocatedMemory();
//    RGBPalette myPalette = getPalette();
//    if (myPalette != null)
//    {
//      result += myPalette.getAllocatedMemory();
//    }
//    return result;
//  }




//  public System.Type getImageType()
//  {
//    return typeof(IPaletted8Image);
//  }




//  public int getMaxSample(RGBIndex channel)
//  {
//    return maxSampleValue;
//  }




//  /**
//   * Returns this image's palette.
//   * @see #setPalette
//   */
//  public RGBPalette getPalette()
//  {
//    return palette;
//  }




//  public String getTypeDescription()
//  {
//    return "Paletted image, 8 bits per pixel";
//  }




//  /**
//   * Sets this image's palette to a new value.
//   * @see #getPalette
//   */
//  public void setPalette(RGBPalette palette)
//  {
//    if (palette != null && palette.getNumEntries() > 256)
//    {
//      throw new ArgumentException("Cannot use palette with more " +
//        "than 256 entries in a Paletted8Image.");
//    }
//    this.palette = palette;
//    if (palette == null)
//    {
//      maxSampleValue = 255;
//    }
//    else
//    {
//      maxSampleValue = palette.getNumEntries() - 1;
//    }
//  }
//}
//}